#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QString>
#include <QLabel>

#include <QtCharts/QChart>
#include <QtCharts/QChartView>  // 图标相框
#include <QtCharts/QLineSeries> // 绘制线
#include <QtCharts/QValueAxis>  // 坐标轴
#include <QtCharts/QDateTimeAxis>   // 时间坐标轴

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class colorForm;

// 使用 QChart，必须包含这个名字空间，不然，就要加名字空间
// 例如：QtCharts::QChart
QT_CHARTS_USE_NAMESPACE

typedef struct tagTipsColor
{
    QString strColor{""};
    QString strTipsTxt{""};

    tagTipsColor(){}

    tagTipsColor(QString color, QString strTxt){
        strColor = color;
        strTipsTxt = strTxt;
    }
}TAGTIPSCOLOR;

// 绘制折线数据
typedef struct LinePtProgress
{
    __int64    x;               // 使用word类型，记录时间,
    int    y;                   // 具体数值
    QString yColor{""};
    LinePtProgress(){}
    LinePtProgress(__int64 inX, int inY, QString inYColor="#B3F4AB"){
        x = inX;
        y = inY;
        yColor = inYColor;
    }
}LPTPROGRESS;

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

public:
    void initData();

    void initUi();

protected:
    void    resizeEvent(QResizeEvent* event) override;

    void    showEvent(QShowEvent *event) override;

private:
    void            initChart();

    // 创建仿真数据单元
    void            createTempDataUnit(QVector<QVector<LPTPROGRESS>>& vecArrData, QStringList& vecColor,
                                       const int unitSize, const int size);
    // 造仿真数据
    void            createTempData(QVector<LPTPROGRESS>& arrData, QString strColor, const int size, const int key);

    // 设置颜色图例
    void            setColorLayout(QVector<colorForm*> vecForm);

    // 绘制数据线
    void            drawDataLine(QVector<QVector<LPTPROGRESS>>& vecPtInfo);

    // 设置样式
    void            loadStyleSheet();

private:
    Ui::Widget *ui;
    QVector<TAGTIPSCOLOR>               m_arrColor;
    QVector<QVector<LPTPROGRESS>>       m_vecArrData;
    QChart*                             m_chart{nullptr};
    QChartView*                         m_chartView{nullptr};
    QDateTimeAxis *                     m_axisX{nullptr};           // X轴
    QValueAxis*                         m_axisY{nullptr};           // Y轴

    QLabel*                             m_targetLabel{nullptr};
};
#endif // WIDGET_H
